home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- ** **
- ** Module: TtTinselTown.h **
- ** **
- ** Purpose: Sample empty drawing engine. **
- ** Include file. **
- ** **
- ** Author: Mike W. Kelley **
- ** **
- ** 2/3/95 Revised for 0.9 SDK release **
- ** **
- ** Copyright (C) 1994-95 Apple Computer, Inc. All rights reserved. **
- ** Apple Computer Confidential **
- ** **
- *****************************************************************************/
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /************************************************************************************************
- * Miscellaneous constants.
- ***********************************************************************************************/
-
- #define kTtMaxTag kQATag_Texture
-
- #define kTtFalse 0
- #define kTtTtue 1
-
- #define kTtMyVendorID (-1) /* NEED TO GET THIS FROM APPLE! */
- #define kTtMyEngineID 0 /* Whatever I choose */
- #define kTtMyRevisionID 0 /* Whatever I choose */
-
- /************************************************************************************************
- * The TQADrawPrivate datatypes.
- ***********************************************************************************************/
-
- typedef union TTtState
- {
- unsigned long i;
- float f;
- const void *p;
- } TTtState;
-
- typedef struct TTtDrawPrivate
- {
- /*
- * Storage for state variables. All drawing engines need this
- * in some form.
- */
-
- TTtState state [kTtMaxTag + 1]; /* State variables */
-
- /*
- * Various private draw engine data. Here we've kept a copy of
- * the TQADevice passed to QADrawContextNew(), the creation flags,
- * and some data that describes the target region of the device.
- */
-
- long flags; /* Creation flags */
- TQADevice device; /* Creation device */
- TQARect deviceRect; /* Target rect position */
-
- long width;
- long height;
- long rowBytes;
- long depth;
- void *baseAddr;
- } TTtDrawPrivate;
-
- /************************************************************************************************
- * The TQAStorePrivate datatypes. This is just a placeholder; these are
- * engine-specific. A single TTtStorePrivate global instance is used to hold
- * information on all bitmaps and textures allocated by the engine.
- ***********************************************************************************************/
-
- typedef struct TTtBitmap TTtBitmap;
- typedef struct TTtTexture TTtTexture;
- typedef struct TTtStorePrivate TTtStorePrivate;
-
- struct TTtStorePrivate
- {
- TTtBitmap *firstBitmap; /* Head of linked list */
- TTtTexture *firstTextureMap; /* Head of linked list */
- };
-
- extern TTtStorePrivate gTtStorePrivate;
-
- /************************************************************************************************
- * Utility function prototypes.
- ***********************************************************************************************/
-
- #ifdef kTtDebug
- void TtError (
- const char *message);
- #endif
-
- #define TtMemoryNew(nBytes) malloc(nBytes)
- #define TtMemoryDelete(target) free(target)
-
- /************************************************************************************************
- * TtRegister() causes MAB to register itself with Tinsel Town. When we're linking
- * our engine directly, this should be called before any Tinsel Town calls are made.
- * When we're building as a shared library, this should be called as the library
- * initialization function. Because the initialization function must return an
- * OSErr, that function does so.
- ***********************************************************************************************/
-
- OSErr TtRegister (void);
-
- /************************************************************************************************
- * Tinsel Town system methods.
- ***********************************************************************************************/
-
- TQAError TtDrawPrivateNew (
- TQADrawContext *newDrawContext, /* Draw context to initialize */
- const TQADevice *device, /* Target device */
- const TQARect *rect, /* Target rectangle (device coordinates) */
- const TQAClip *clip, /* 2D clip region (or NULL) */
- unsigned long flags); /* Mask of kQAContext_xxx */
-
- void TtDrawPrivateDelete (
- TQADrawPrivate *drawPrivate); /* Private context data to delete */
-
- TQAError TtEngineDeviceCheck (
- const TQADevice *device); /* Target device */
-
- TQAError TtEngineGestalt (
- TQAGestaltSelector selector, /* Gestalt parameter being requested */
- void *response); /* Buffer that receives response */
-
- /************************************************************************************************
- * Tinsel Town draw context methods.
- ***********************************************************************************************/
-
- void TtSetFloat (
- TQADrawContext *drawContext, /* Draw context */
- TQATagFloat tag, /* Tag of variable to set */
- float newValue); /* New value for variable */
-
- void TtSetInt (
- TQADrawContext *drawContext, /* Draw context */
- TQATagInt tag, /* Tag of variable to set */
- unsigned long newValue); /* New value for variable */
-
- void TtSetPtr (
- TQADrawContext *drawContext, /* Draw context */
- TQATagPtr tag, /* Tag of variable to set */
- const void *newValue); /* New value for variable */
-
- float TtGetFloat (
- const TQADrawContext *drawContext, /* Draw context */
- TQATagFloat tag); /* Tag of variable to get */
-
- unsigned long TtGetInt (
- const TQADrawContext *drawContext, /* Draw context */
- TQATagInt tag); /* Tag of variable to get */
-
- void *TtGetPtr (
- const TQADrawContext *drawContext, /* Draw context */
- TQATagPtr tag); /* Tag of variable to get */
-
- void TtDrawPoint (
- const TQADrawContext *drawContext, /* Draw context */
- const TQAVGouraud *v0); /* Vertex */
-
- void TtDrawLine (
- const TQADrawContext *drawContext, /* Draw context */
- const TQAVGouraud *v0, /* Vertex 0 */
- const TQAVGouraud *v1); /* Vertex 1 */
-
- void TtDrawTriGouraud (
- const TQADrawContext *drawContext, /* Draw context */
- const TQAVGouraud *v0, /* Vertex 0 */
- const TQAVGouraud *v1, /* Vertex 1 */
- const TQAVGouraud *v2, /* Vertex 2 */
- unsigned long flags); /* Mask of kQATriFlags_xxx flags */
-
- void TtDrawTriTexture (
- const TQADrawContext *drawContext, /* Draw context */
- const TQAVTexture *v0, /* Vertex 0 */
- const TQAVTexture *v1, /* Vertex 1 */
- const TQAVTexture *v2, /* Vertex 2 */
- unsigned long flags); /* Mask of kQATriFlags_xxx flags */
-
- void TtDrawBitmap (
- const TQADrawContext *drawContext, /* Draw context */
- const TQAVGouraud *v, /* xyz, and (if a 1 bit/pixel bitmap) argb */
- TQABitmap *bitmap); /* Previously allocated by QABitmapNew() */
-
- void TtRenderStart (
- const TQADrawContext *drawContext, /* Draw context */
- const TQARect *dirtyRect, /* Minimum area to clear; NULL means whole buffer */
- const TQADrawContext *initialContext); /* Initial background image (or NULL) */
-
- TQAError TtRenderEnd (
- const TQADrawContext *drawContext, /* Draw context */
- const TQARect *modifiedRect); /* Minimum area to swap; NULL means whole buffer */
-
- TQAError TtRenderAbort (
- const TQADrawContext *drawContext); /* Draw context */
-
- TQAError TtSync (
- const TQADrawContext *drawContext); /* Draw context */
-
- TQAError TtFlush (
- const TQADrawContext *drawContext); /* Draw context */
-
- /************************************************************************************************
- * Tinsel Town store context methods.
- ***********************************************************************************************/
-
- TQAError TtTextureNew (
- unsigned long flags, /* Mask of kQATexture_xxx flags */
- TQAImagePixelType pixelType, /* Depth, color space, etc. */
- const TQAImage images[], /* Image(s) for texture */
- TQATexture **newTexture); /* (Out) Newly created TQATexture, or NULL on error */
-
- TQAError TtTextureDetach (
- TQATexture *texture); /* Previously allocated by QATextureNew() */
-
- void TtTextureDelete (
- TQATexture *texture); /* Previously allocated by QATextureNew() */
-
- TQAError TtBitmapNew (
- unsigned long flags, /* Mask of kQABitmap_xxx flags */
- TQAImagePixelType pixelType, /* Depth, color space, etc. */
- const TQAImage *image, /* Image */
- TQABitmap **newBitmap); /* (Out) Newly created TQABitmap, or NULL on error */
-
- TQAError TtBitmapDetach (
- TQABitmap *bitmap); /* Previously allocated by QABitmapNew() */
-
- void TtBitmapDelete (
- TQABitmap *bitmap); /* Previously allocated by QABitmapNew() */
-
- #ifdef __cplusplus
- };
- #endif
-